<?php
namespace app\common\model;

use think\Model;
use think\db;

/**  CQH
 *   设备库表信息model
 *   Date: 2017/8/28
 * Class Equipments
 * @package app\common\model
 */
class Equipments extends Model
{ 
	protected $db;
	protected $equipment_lists;
	protected $equipment_library;

	public function __construct()
	{
		$this->db = Db::name("equipments");
		$this->equipment_lists = Db::name("equipment_lists");
		$this->equipment_library = Db::name("equipment_library");
	}

    /**
     * 添加设备
     * 请求参数     请求类型      是否必须      说明
     * @author ligang
     * @param array $data
     * @return int|string
     * @date 2018/7/24 18:12
     */
	public function insertEquipmentLists(array $data)
    {
        return $this->equipment_lists->insertGetId($data);
    }

    /**
     * 更新设备库
     * 请求参数     请求类型      是否必须      说明
     * @author ligang
     * @param array $where
     * @param array $data
     * @return int|string
     * @throws \think\Exception
     * @throws \think\exception\PDOException
     * @date 2018/7/24 18:13
     */
    public function updateEquipmentLibrary(array $data,array $where = [])
    {
        if (empty($where)){
            return $this->equipment_library->update($data);
        }
        return $this->equipment_library->where($where)->update($data);
    }

    /**
     * 更新设备
     * 请求参数     请求类型      是否必须      说明
     * @author ligang
     * @param array $where
     * @param array $data
     * @return int|string
     * @throws \think\Exception
     * @throws \think\exception\PDOException
     * @date 2018/7/24 18:13
     */
    public function updateEquipmentLists(array $data,array $where = [])
    {
        if (empty($where)){
            return $this->equipment_lists->update($data);
        }
        return $this->equipment_lists->where($where)->update($data);
    }

    /**
     * 查找设备库信息
     * 请求参数     请求类型      是否必须      说明
     * @author ligang
     * @param array $where
     * @param string $field
     * @return array|false|\PDOStatement|string|Model
     * @throws \think\exception\DbException
     * @throws db\exception\DataNotFoundException
     * @throws db\exception\ModelNotFoundException
     * @date 2018/7/24 18:04
     */
	public function findEquipmentLibrary(array $where,string $field = '*')
    {
        return $this->equipment_library->where($where)->field($field)->find();
    }

    /**
     * 查找设备信息
     * 请求参数     请求类型      是否必须      说明
     * @author ligang
     * @param array $where
     * @param string $field
     * @return array|false|\PDOStatement|string|Model
     * @throws \think\exception\DbException
     * @throws db\exception\DataNotFoundException
     * @throws db\exception\ModelNotFoundException
     * @date 2018/7/24 18:04
     */
    public function findEquipmentLists(array $where,string $field = '*')
    {
        return $this->equipment_lists->where($where)->field($field)->find();
    }

	/**
	 * 设备库表记录增加一条数据
	 * @param $data  ->  数组   ['key' => 'value']
	 * @return bool
	 */	
	public function insertOne($data)
	{
        //$this->data($data);
        $result = $this->db->insert($data);
        // 判断结果 并返回
        if ($result !== 1) {
            return false;
        }
        return $result;
	}	
	
	/**
	 * 按equipments_id主键删除一条数据（逻辑删除）
	 * @param $id
	 * @return $this|bool
	 */
	public function deleteOne($id)
	{
		$result = $this->db->where(array('equipments_id'=>$id))->setField('is_delete',1);
		if ($result !== 1) {
			return false;
		}
		return $result;
	}

	/**
	 * 根据条件 $where修改一条数据
	 * @param $where ->  条件  ['key' => 'value']
	 * @param $data  ->  数据  ['key' => 'value', 'key' => 'value']
	 * @return $this|bool
	 */
    public function updateOne($where,$data)
    {
    	// 根据条件修改一条数据
    	$result = $this->db->where($where)->update($data);
    	// 判断结果 并返回数据
    	if ($result == false) {
    		return false;
    	}
    	return $result;
    }
	
    /**
     * 根据条件 $where获取单条数据
     * @param $where  ->  数组  ['key' => 'value']
     * @return bool|false|\PDOStatement|string|\think\Collection    
     */
    public function selectOne($where,$filed='*')
    {
    	$userInfo = $this->db->where($where)->field($filed)->find();
    	// 判断结果并返回
    	if ($userInfo == false) {
    		return false;
    	}
    	return $userInfo;
    }
	
    /**
     * 获取所有 未被逻辑删除的数据
     * @return bool|false|\PDOStatement|string|\think\Collection    
     */
    public function getList()
    {
    	$userInfo = $this->db->where(array('is_delete'=>0))->cache(true)->select();
    	// 判断结果 并返回
    	if ($userInfo == false) {
    		return false;
    	}
    	return $userInfo;
    }

    /**
     * @desc   列表
     * @param  无
     * @date   2018-09-05
     * @author lcx
     * @param  array       $map      [description]
     * @param  int|integer $page     [description]
     * @param  int|integer $pagesize [description]
     * @param  array       $order    [description]
     * @return [type]                [description]
     */
    public function getAll(array $map=array(),int $page=1, int $pagesize=-1,array $order=['create_time'=>'DESC'],string $field='*')
    {
        $map['is_delete'] = 0;
       // $map['is_shelves'] = 1;
        return $this->db
                ->where($map)
                ->cache(true)
                ->order($order)
                ->field($field)
                ->page($page,$pagesize)
                ->select();
    }

    /**
     *
     * 请求参数     请求类型      是否必须      说明
     * @author ligang
     * @param $map
     * @param $Nowpage
     * @param $join
     * @param $field
     * @param $limits
     * @param array $order
     * @return false|\PDOStatement|string|\think\Collection
     * @throws \think\exception\DbException
     * @throws db\exception\DataNotFoundException
     * @throws db\exception\ModelNotFoundException
     * @date 2018/7/24 10:21
     */
    public function selectEquipmentLists($map,$join,$field, $Nowpage, $limits,array $order)
    {
        $result = $this->equipment_lists->alias('el')->where($map)
                    ->join($join)
                    ->field($field)
                    ->order($order)
                    ->page($Nowpage,$limits)
                    ->select();
//        echo $this->equipment_lists->getLastSql();die();
        return $result;
    }

    /**
     *
     * 请求参数     请求类型      是否必须      说明
     * @author ligang
     * @param array $where
     * @param string $field
     * @return false|\PDOStatement|string|\think\Collection
     * @throws \think\exception\DbException
     * @throws db\exception\DataNotFoundException
     * @throws db\exception\ModelNotFoundException
     * @date 2018/7/24 17:23
     */
    public function selectEquipment(array $where,string $field)
    {
        return $this->db->where($where)->field($field)->select();
    }

    //获取单个产品信息
    public function getOne(array $where,string $field='*'){
        return $this->db->where($where)->field($field)->find();
    }

    /**
     *
     * 请求参数     请求类型      是否必须      说明
     * @author ligang
     * @param $map
     * @return int|string
     * @date 2018/7/24 10:22
     */
    public function EquipmentListsCount($map,$join = [])
    {
        if (empty($join)){
            return $this->equipment_lists->alias('el')->where($map)->count();
        }
        return $this->equipment_lists->alias('el')->where($map)->join($join)->count();
    }

    public function getAllCount($map)
    {
        return $this->db->where($map)->where(array('is_delete'=>0))->count();
    }

    /**
     * @param $where
     * @param $field
     * @return false|\PDOStatement|string|\think\Collection
     *          根据条件查询设备表数据
     */
    public function get_id_all($id,$field)
    {
        $where['equipments_id'] = $id;
        $equipments = $this->db
                        ->field($field)
                        ->where($where)
                        ->select();

        return $equipments;
    }







}
